package com.lbt.weixin.server.jackson.filter;

import java.util.HashSet;
import java.util.Set;

import com.lbt.weixin.common.bean.entity.Car;
import com.lbt.weixin.common.bean.entity.User;
import com.fasterxml.jackson.databind.ser.FilterProvider;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;

/**
 * @author Moyq5's MvcMaker Tools
 */
public abstract class UserFilter {

	public static FilterProvider getId() {
		final Set<String> user = new HashSet<String>();
		user.add("userId");
		
		return new SimpleFilterProvider().addFilter(
				User.class.getSimpleName(),
				SimpleBeanPropertyFilter.filterOutAllExcept(user));
	}

	public static FilterProvider get() {
		final Set<String> user = new HashSet<String>();
		user.add("userId");
		user.add("mobile");
		user.add("openId");
		user.add("nickname");
		user.add("sex");
		user.add("city");
		user.add("province");
		user.add("headUrl");
		user.add("isSubscribe");
		user.add("subscribeTime");
		user.add("remark");
		user.add("addTime");
		
		return new SimpleFilterProvider().addFilter(
				User.class.getSimpleName(),
				SimpleBeanPropertyFilter.filterOutAllExcept(user));
	}

	public static FilterProvider getWithCars() {
		final Set<String> user = new HashSet<String>();
		user.add("userId");
		user.add("mobile");
		user.add("openId");
		user.add("nickname");
		user.add("sex");
		user.add("city");
		user.add("province");
		user.add("headUrl");
		user.add("isSubscribe");
		user.add("subscribeTime");
		user.add("remark");
		user.add("addTime");
		user.add("cars");
		final Set<String> car = new HashSet<String>();
		car.add("carId");
		car.add("carNo");
		car.add("isDefault");
		
		return new SimpleFilterProvider().addFilter(
				User.class.getSimpleName(),
				SimpleBeanPropertyFilter.filterOutAllExcept(user))
				.addFilter(
				Car.class.getSimpleName(),
				SimpleBeanPropertyFilter.filterOutAllExcept(car));
	}

}
